﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using EXT;
using System.Windows.Forms;

namespace BanHangCshap.DanhMuc.gkhtdl63
{
    public partial class frmQCBoSanpham : Form
    {
        public frmQCBoSanpham()
        {
            InitializeComponent();
        }

        Class.gkhtdl63.BLL.QCBoSanphamBLL xgQCBoSanphamBLL = new BanHangCshap.Class.gkhtdl63.BLL.QCBoSanphamBLL();
        Class.gkhtdl63.BLL.ChitietQCBOSanphamBLL xgChitietQCBOSanphamBLL = new BanHangCshap.Class.gkhtdl63.BLL.ChitietQCBOSanphamBLL();
        Class.gkhtdl63.BLL.DieukienBaohanhBLL xgDKBH = new BanHangCshap.Class.gkhtdl63.BLL.DieukienBaohanhBLL();
        private DataTable xgDTHanghoa = new DataTable();
        Class.HangHoa xgHanghoa = new BanHangCshap.Class.HangHoa();

        bool xgIsAOrE = true;
        string xgMa_BoSanpham = string.Empty;
        string xgMa_Nguoidung = string.Empty;

        private void LoadBoSanpham()
        {
            Class.gkhtdl63.BLL.BoSanphamBLL xlBoSanphamBLL = new BanHangCshap.Class.gkhtdl63.BLL.BoSanphamBLL();
            DataTable xlDTBOSanpham = xlBoSanphamBLL.BoSanpham_LayDanhsach();
            if (xlDTBOSanpham != null)
            {
                gcMain.DataSource = xlDTBOSanpham;
            }
            else DevExpress.XtraEditors.XtraMessageBox.Show("Không kế nối được với cở sở dữ liệu\n Vui lòng kiểm tra lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void LoadQCBoSanpham(string xlMa_BoSanpham)
        {
            DataTable xlDTQCBOSanpham = xgQCBoSanphamBLL.QCBoSanpham_LayTheoMa_BoSanpham(xlMa_BoSanpham);
            if (xlDTQCBOSanpham != null)
            {
                gcSub.DataSource = xlDTQCBOSanpham;
            }
            else DevExpress.XtraEditors.XtraMessageBox.Show("Không kế nối được với cở sở dữ liệu\n Vui lòng kiểm tra lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void LoadDVT(string Mahang)
        {
            cbxDVT.Items.Clear();
            DataRow[] xlDRHanghoa = xgDTHanghoa.Select(String.Format("mahang ='{0}'", Mahang));
            if (xlDRHanghoa != null)
            {
                if (xlDRHanghoa.Length > 0)
                {
                    if (xlDRHanghoa[0]["dvt"].ToString().Trim().Length > 0)
                        cbxDVT.Items.Add(xlDRHanghoa[0]["dvt"].ToString());
                    if (xlDRHanghoa[0]["dvt1"].ToString().Trim().Length > 0)
                        cbxDVT.Items.Add(xlDRHanghoa[0]["dvt1"].ToString());
                    if (xlDRHanghoa[0]["dvt2"].ToString().Trim().Length > 0)
                        cbxDVT.Items.Add(xlDRHanghoa[0]["dvt2"].ToString());
                }
            }
        }

        private void LoadChitietQCBoSanpham(string xlMa_QCBoSanpham)
        {
            DataTable xlDT = xgChitietQCBOSanphamBLL.ChitietQCBoSanpham_LayTheoMa_QCBoSanpham(xlMa_QCBoSanpham);
            if (xlDT != null)
            {
                gcHanghoa.DataSource = xlDT;
            }
            else DevExpress.XtraEditors.XtraMessageBox.Show("Không kế nối được với cở sở dữ liệu\n Vui lòng kiểm tra lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void XoatrongDulieuQCBoSanPham()
        {
            txtMa.EditValue = null;
            txtTen.EditValue = null;
            dtpNgaytao.Properties.ReadOnly = false;
            dtpNgaytao.EditValue = DateTime.Now;
            txtMota.EditValue = null;
            txtGianhap.EditValue = 0;
            txtGiaxuat.EditValue = null;
            txtGhichu.EditValue = null;
            gleMa_DieukienBaohanh.EditValue = null;
            txtMota_DieukienBaohanh.EditValue = null;
            txtThoigianBaohanh.Properties.ReadOnly = false;
            txtThoigianBaohanh.EditValue = 0;
            cbxHiendung.EditValue = null;
            gcHanghoa.DataSource = null;
            txtSoluong.EditValue = null;
            txtDVT.EditValue = null;
            txtTen.Focus();
        }

        private void TaiDulieuQCBoSanPham(string xlMa_QCBoSanpham)
        {
            DataTable xlDT = xgQCBoSanphamBLL.QCBoSanpham_LayTheoMa(xlMa_QCBoSanpham);
            if (xlDT != null)
            {
                txtMa.EditValue = xlDT.Rows[0]["Ma"].ToString();
                txtTen.EditValue = xlDT.Rows[0]["Ten"].ToString();
                dtpNgaytao.EditValue = xlDT.Rows[0]["Ngaytao"].ToString();
                txtMota.EditValue = xlDT.Rows[0]["Mota"].ToString();
                txtGianhap.EditValue = xlDT.Rows[0]["Giagoc"].ToFloat();
                txtGiaxuat.EditValue = xlDT.Rows[0]["Giaxuat"].ToFloat();
                txtGhichu.EditValue = xlDT.Rows[0]["Ghichu"].ToString();
                gleMa_DieukienBaohanh.EditValue = xlDT.Rows[0]["Ma_DieukienBaohanh"].ToString();
                txtThoigianBaohanh.EditValue = xlDT.Rows[0]["ThoigianBaohanh"].ToFloat();
                cbxHiendung.EditValue = xlDT.Rows[0]["Hiendung"].ToBoolean();
                xgMa_Nguoidung = xlDT.Rows[0]["MaNguoidung"].ToString();
                txtDVT.EditValue = xlDT.Rows[0]["DVT"].ToString();
                txtSoluong.EditValue = xlDT.Rows[0]["SoluongCon"].ToFloat();
                gcHanghoa.DataSource = xgChitietQCBOSanphamBLL.ChitietQCBoSanpham_LayTheoMa_QCBoSanpham(xlMa_QCBoSanpham);
            }
        }

        private void LoadChitietSQBoSanPhamNULL()
        {
            gcHanghoa.DataSource = xgChitietQCBOSanphamBLL.ChitietQCBoSanpham_LayTheoMa_QCBoSanpham("");
        }

        private void LoadHanghoa()
        {
            Class.HangHoa xlHH = new BanHangCshap.Class.HangHoa();
            xgDTHanghoa = xlHH.Thongke_hanghoa();
            gleHanghoa.DataSource = xgDTHanghoa;
            gleHanghoa.DisplayMember = "hanghoa";
            gleHanghoa.ValueMember = "mahang";
            gleHanghoa.PopupFormWidth = 700;
        }

        private void LoadDieukienBaohanh()
        {
            gleMa_DieukienBaohanh.Properties.DataSource = xgDKBH.DieukienBaohanh_LayDanhsach();
        }

        private bool Kiemtra()
        {
            if (txtMa.Text.Trim().Equals(""))
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Không kết nối được với CSDL\nVui lòng kiểm tra lại Server", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtMa.Focus();
                return false;
            }
            if (txtTen.Text.Trim().Equals(""))
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Bạn chưa nhập tên phiên bản dòng sản phẩm", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtTen.Focus();
                return false;
            }
            if (txtDVT.Text.Trim().Equals(""))
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Bạn chưa nhập tên phiên bản dòng sản phẩm", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtDVT.Focus();
                return false;
            }
            if (dtpNgaytao.EditValue == null)
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Bạn chưa chọn ngày tạo phiên bản dòng sản phẩm", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                dtpNgaytao.Focus();
                return false;
            }
            if (txtMota.Text.Trim().Equals(""))
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Bạn chưa nhập mô tả cho phiên bản dòng sản phẩm", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtMota.Focus();
                return false;
            }
            if (txtGiaxuat.EditValue == null)
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Bạn chưa nhập giá bán ướt tính cho phiên bản dòng sản phẩm", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtGiaxuat.Focus();
                return false;
            }
            if (txtGiaxuat.EditValue.ToInt64() < 0)
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Giá bán ướt tính không nên âm", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtGiaxuat.Focus();
                return false;
            }
            if (gleMa_DieukienBaohanh.EditValue == null)
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Bạn chưa xát định điều kiện bảo hành cho phiên bản sản phẩm", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                gleMa_DieukienBaohanh.Focus();
                return false;
            }
            if (txtThoigianBaohanh.Text.Trim().Equals(""))
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Bạn chưa nhập thời gian bảo hành", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtThoigianBaohanh.Focus();
                return false;
            }

            return true;
        }

        private void frmQCBoSanpham_Load(object sender, EventArgs e)
        {
            LoadBoSanpham();
            LoadDieukienBaohanh();
            LoadHanghoa();
            LoadChitietSQBoSanPhamNULL();
        }

        private void gleMa_DieukienBaohanh_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                txtMota_DieukienBaohanh.EditValue = ((DataTable)gleMa_DieukienBaohanh.Properties.DataSource).Select(String.Format("Ma ='{0}'", gleMa_DieukienBaohanh.EditValue))[0]["Mota"].ToString();
            }
            catch (Exception)
            {
                txtMota_DieukienBaohanh.EditValue = null;
            }
        }

        private void btnThemPhienbanDongsanpham_Click(object sender, EventArgs e)
        {
            try
            {
                XoatrongDulieuQCBoSanPham();
                xgMa_BoSanpham = gvMain.GetFocusedRowCellValue("Ma").ToString();
                txtMa.EditValue = xgQCBoSanphamBLL.QCBoSanPham_Taoma(xgMa_BoSanpham, DateTime.Now);
                LoadChitietSQBoSanPhamNULL();
                xgIsAOrE = true;
            }
            catch (Exception)
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Chưa chọn dòng sản phẩm", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void dtpNgaytao_EditValueChanged(object sender, EventArgs e)
        {
            //Sữa thì ko cần gợi lại tạo mã, chỉ có thêm mới gợi
            if (xgIsAOrE)
            {
                txtMa.EditValue = xgQCBoSanphamBLL.QCBoSanPham_Taoma(xgMa_BoSanpham, dtpNgaytao.DateTime);
            }
        }

        #region INIT Chi tiết hàng hóa trong bộ sản phẩm
        //,<Ma_Hanghoa, varchar(50),>
        public string Ma_Hanghoa { get; set; }
        //,<SLChuaquydoi, float,>
        public float SLChuaquydoi { get; set; }
        //,<DVT, nvarchar(50),>
        public string DVT { get; set; }
        //,<Giaxuat, float,>
        public float Giaxuat { get; set; }
        //,<Thanhtien, float,>
        public float Thanhtien { get; set; }
        //,<TyleQuydoi, float,>
        public float TyleQuydoi { get; set; }
        //,<SoluongGoc, float,>
        public float SoluongGoc { get; set; }
        #endregion

        private void gvHanghoa_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
        {
            try
            {
                DataRow[] xlDRHanghoa = xgDTHanghoa.Select(String.Format("mahang ='{0}'", Ma_Hanghoa));
                if (xlDRHanghoa.Length > 0)
                {
                    gvHanghoa.SetRowCellValue(e.RowHandle, colMa_Hanghoa, Ma_Hanghoa);
                }
                gvHanghoa.SetRowCellValue(e.RowHandle, colDVT, DVT);
                gvHanghoa.SetRowCellValue(e.RowHandle, colSLChuaquydoi, SLChuaquydoi);
                gvHanghoa.SetRowCellValue(e.RowHandle, colGiaxuat, Giaxuat);
                gvHanghoa.SetRowCellValue(e.RowHandle, colThanhtien, Thanhtien);
                gvHanghoa.SetRowCellValue(e.RowHandle, colTyleQuydoi, TyleQuydoi);
                gvHanghoa.SetRowCellValue(e.RowHandle, colSoluongGoc, SoluongGoc);
            }
            catch (Exception)
            {
            }
        }

        private void gleHanghoa_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
        {
            Ma_Hanghoa = "";
            DVT = "";
            SLChuaquydoi = 0;
            Giaxuat = 0;
            Thanhtien = 0;
            TyleQuydoi = 0;
            SoluongGoc = 0;
            try
            {
                DataRow[] xlDT = xgDTHanghoa.Select(String.Format("mahang ='{0}'", e.NewValue));
                if (xlDT.Length > 0)
                {
                    if (!e.NewValue.ToString().Equals(""))
                    {
                        Ma_Hanghoa = e.NewValue.ToString();
                        DVT = xlDT[0]["dvt"].ToString();
                        SLChuaquydoi = SoluongGoc = TyleQuydoi = 1;
                        Giaxuat = xlDT[0]["gianhap"].ToFloat();
                        Thanhtien = Giaxuat * SLChuaquydoi;
                    }
                    try
                    {
                        DataRow xlDR = gvHanghoa.GetFocusedDataRow();
                        SLChuaquydoi = xlDR["SLChuaquydoi"].ToFloat();
                        SoluongGoc = SLChuaquydoi;
                        Thanhtien = SLChuaquydoi * Giaxuat;
                    }
                    catch (Exception)
                    {
                    }
                    gvHanghoa.SetFocusedRowCellValue(colMa_Hanghoa, Ma_Hanghoa);
                    gvHanghoa.SetFocusedRowCellValue(colDVT, DVT);
                    gvHanghoa.SetFocusedRowCellValue(colSLChuaquydoi, SLChuaquydoi);
                    gvHanghoa.SetFocusedRowCellValue(colGiaxuat, Giaxuat);
                    gvHanghoa.SetFocusedRowCellValue(colTyleQuydoi, TyleQuydoi);
                    gvHanghoa.SetFocusedRowCellValue(colSoluongGoc, SoluongGoc);
                    gvHanghoa.SetFocusedRowCellValue(colThanhtien, Thanhtien);
                    gvHanghoa.UpdateCurrentRow();
                }
            }
            catch (Exception)
            {
            }
        }

        /// <summary>
        /// Lưu lại 
        /// </summary>
        private void btnLuu_Click(object sender, EventArgs e)
        {
            //Kiểm tra nhập liệu
            if (!Kiemtra()) return;

            Class.gkhtdl63.DAL.Entities.QCBoSanpham xlQCBSP = new BanHangCshap.Class.gkhtdl63.DAL.Entities.QCBoSanpham();
            xlQCBSP.Ma = txtMa.EditValue.ToString().ToUpper();
            xlQCBSP.Ma_BoSanpham = xgMa_BoSanpham;
            xlQCBSP.Ten = txtTen.EditValue.ToString().ToUpperFirst();
            xlQCBSP.Mota = txtMota.EditValue.ToString().ToUpperFirst();
            xlQCBSP.Ngaytao = dtpNgaytao.EditValue.ToDateTime();
            xlQCBSP.Giagoc = txtGianhap.EditValue.ToFloat();
            xlQCBSP.Giaxuat = txtGiaxuat.EditValue.ToFloat();
            xlQCBSP.Ghichu = txtGhichu.Text.ToString().ToUpperFirst();
            xlQCBSP.Hiendung = cbxHiendung.EditValue.ToBoolean();
            xlQCBSP.Ma_DieukienBaohanh = gleMa_DieukienBaohanh.EditValue.ToString();
            xlQCBSP.ThoigianBaohanh = txtThoigianBaohanh.EditValue.ToInt32();
            xlQCBSP.DVT = txtDVT.Text.Trim().ToUpperFirst();

            DatabaseStatic.sqltrans = DatabaseStatic.conn.BeginTransaction();
            bool xlOki = true;

            if (xgIsAOrE)
            {
                xlQCBSP.MaNguoidung = UserStatic.tendn;
                xlOki = xgQCBoSanphamBLL.QCBoSanpham_Them(xlQCBSP);
                if (xlOki)
                {
                    int xlCount = gvHanghoa.RowCount - 1;
                    Class.gkhtdl63.DAL.Entities.ChitietQCBoSanpham xlCTQCBSP = new BanHangCshap.Class.gkhtdl63.DAL.Entities.ChitietQCBoSanpham();
                    for (int i = 0; i < xlCount; i++)
                    {
                        DataRow xlR = gvHanghoa.GetDataRow(i);
                        xlCTQCBSP.Id = Guid.NewGuid();
                        xlCTQCBSP.STT = i + 1;
                        xlCTQCBSP.Ma_Hanghoa = xlR["Ma_Hanghoa"].ToString();
                        xlCTQCBSP.Ma_QCBoSanpham = xlQCBSP.Ma;
                        xlCTQCBSP.SLChuaquydoi = xlR["SLChuaquydoi"].ToFloat();
                        xlCTQCBSP.DVT = xlR["DVT"].ToString();
                        xlCTQCBSP.Giaxuat = xlR["Giaxuat"].ToFloat();
                        xlCTQCBSP.Thanhtien = xlR["Thanhtien"].ToFloat();
                        xlCTQCBSP.TyleQuydoi = xlR["TyleQuydoi"].ToFloat();
                        xlCTQCBSP.SoluongGoc = xlR["SoluongGoc"].ToFloat();
                        xlCTQCBSP.Ghichu = "";
                        if (!xgChitietQCBOSanphamBLL.ChitietQCBoSanpham_Them(xlCTQCBSP))
                        {
                            xlOki = false;
                            break;
                        }
                    }
                }
                else xlOki = false;
            }
            else
            {
                xlQCBSP.MaNguoidung = xgMa_Nguoidung;
                if (xgChitietQCBOSanphamBLL.ChitietQCBoSanpham_Xoa(xlQCBSP.Ma))
                {
                    if (xgQCBoSanphamBLL.QCBoSanpham_Capnhat(xlQCBSP, xlQCBSP.Ma))
                    {
                        int xlCount = gvHanghoa.RowCount - 1;
                        Class.gkhtdl63.DAL.Entities.ChitietQCBoSanpham xlCTQCBSP = new BanHangCshap.Class.gkhtdl63.DAL.Entities.ChitietQCBoSanpham();
                        for (int i = 0; i < xlCount; i++)
                        {
                            DataRow xlR = gvHanghoa.GetDataRow(i);
                            xlCTQCBSP.Id = Guid.NewGuid();
                            xlCTQCBSP.STT = i + 1;
                            xlCTQCBSP.Ma_Hanghoa = xlR["Ma_Hanghoa"].ToString();
                            xlCTQCBSP.Ma_QCBoSanpham = xlQCBSP.Ma;
                            xlCTQCBSP.SLChuaquydoi = xlR["SLChuaquydoi"].ToFloat();
                            xlCTQCBSP.DVT = xlR["DVT"].ToString();
                            xlCTQCBSP.Giaxuat = xlR["Giaxuat"].ToFloat();
                            xlCTQCBSP.Thanhtien = xlR["Thanhtien"].ToFloat();
                            xlCTQCBSP.TyleQuydoi = xlR["TyleQuydoi"].ToFloat();
                            xlCTQCBSP.SoluongGoc = xlR["SoluongGoc"].ToFloat();
                            xlCTQCBSP.Ghichu = "";
                            if (!xgChitietQCBOSanphamBLL.ChitietQCBoSanpham_Them(xlCTQCBSP))
                            {
                                xlOki = false;
                                break;
                            }
                        }
                    }
                    else xlOki = false;
                }
                else xlOki = false;
            }

            if (xlOki)
            {
                DatabaseStatic.sqltrans.Commit();
                UltitityStatic.thongBaoThanhCong("Đã lưu thành công.");
                LoadQCBoSanpham(xgMa_BoSanpham);
                xgIsAOrE = false;
            }
            else
            {
                DatabaseStatic.sqltrans.Rollback();
                UltitityStatic.thongBaoLoi("Không thể lưu. Xin kiểm tra lại thông tin.");
            }
        }

        /// <summary>
        /// Chuyển dòng thì load lại đơn vị tính
        /// </summary>
        private void gvHanghoa_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            try
            {
                LoadDVT(gvHanghoa.GetFocusedRowCellValue("Ma_Hanghoa").ToString());
            }
            catch (Exception)
            {
            }
        }

        /// <summary>
        /// Chuyển đến cột đơn vị tính thì load lại đơn vị tính
        /// </summary>
        private void gvHanghoa_FocusedColumnChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedColumnChangedEventArgs e)
        {
            try
            {
                if (e.FocusedColumn.Name == "colDVT")
                {
                    LoadDVT(gvHanghoa.GetFocusedRowCellValue("Ma_Hanghoa").ToString());
                    gvHanghoa.UpdateCurrentRow();
                    gvHanghoa.UpdateTotalSummary();
                    txtGianhap.EditValue = colThanhtien.SummaryItem.SummaryValue;
                }
            }
            catch (Exception)
            {
            }
        }

        private void gvHanghoa_CellValueChanging(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            try
            {
                //Thay đổi đơn vị tính
                if (e.Column.Name.Equals("colDVT"))
                {
                    DataRow[] xlDRHH = xgDTHanghoa.Select(String.Format("mahang = '{0}'", gvHanghoa.GetFocusedRowCellValue("Ma_Hanghoa").ToString()));
                    //--> Nếu là đơn vị tính gốc
                    if (e.Value.ToString().Equals(xlDRHH[0]["dvt"].ToString()))
                    {
                        TyleQuydoi = 1;
                        Giaxuat = gvHanghoa.GetFocusedRowCellValue("Giaxuat").ToFloat() / gvHanghoa.GetFocusedRowCellValue("TyleQuydoi").ToFloat();
                        SoluongGoc = gvHanghoa.GetFocusedRowCellValue("SLChuaquydoi").ToFloat();
                        Thanhtien = gvHanghoa.GetFocusedRowCellValue("SLChuaquydoi").ToFloat() * Giaxuat;
                    }

                    //--> Nếu là đơn vị tính 1
                    if (e.Value.ToString().Equals(xlDRHH[0]["dvt1"].ToString()))
                    {
                        TyleQuydoi = xlDRHH[0]["tilequydoi1"].ToFloat();

                        Giaxuat = gvHanghoa.GetFocusedRowCellValue("Giaxuat").ToFloat() / gvHanghoa.GetFocusedRowCellValue("TyleQuydoi").ToFloat() * TyleQuydoi;
                        SoluongGoc = gvHanghoa.GetFocusedRowCellValue("SLChuaquydoi").ToFloat() * TyleQuydoi;
                        Thanhtien = gvHanghoa.GetFocusedRowCellValue("SLChuaquydoi").ToFloat() * Giaxuat;
                    }

                    //--> Nếu là đơn vị tính 2
                    if (e.Value.ToString().Equals(xlDRHH[0]["dvt2"].ToString()))
                    {
                        TyleQuydoi = xlDRHH[0]["tilequydoi2"].ToFloat();
                        Giaxuat = gvHanghoa.GetFocusedRowCellValue("Giaxuat").ToFloat() / gvHanghoa.GetFocusedRowCellValue("TyleQuydoi").ToFloat() * TyleQuydoi;
                        SoluongGoc = gvHanghoa.GetFocusedRowCellValue("SLChuaquydoi").ToFloat() * TyleQuydoi;
                        Thanhtien = gvHanghoa.GetFocusedRowCellValue("SLChuaquydoi").ToFloat() * Giaxuat;
                    }
                    gvHanghoa.SetFocusedRowCellValue(colGiaxuat, Giaxuat);
                    gvHanghoa.SetFocusedRowCellValue(colTyleQuydoi, TyleQuydoi);
                    gvHanghoa.SetFocusedRowCellValue(colSoluongGoc, SoluongGoc);
                    gvHanghoa.SetFocusedRowCellValue(colThanhtien, Thanhtien);
                    gvHanghoa.UpdateTotalSummary();
                    txtGianhap.EditValue = colThanhtien.SummaryItem.SummaryValue;
                }

                //Thay đổi số lượng
                if (e.Column.Name.Equals("colSLChuaquydoi"))
                {
                    DataRow[] xlDRHH = xgDTHanghoa.Select(String.Format("mahang = '{0}'", gvHanghoa.GetFocusedRowCellValue("Ma_Hanghoa").ToString()));

                    Thanhtien = gvHanghoa.GetFocusedRowCellValue("Giaxuat").ToFloat() * e.Value.ToFloat();
                    SoluongGoc = e.Value.ToFloat() * gvHanghoa.GetFocusedRowCellValue("TyleQuydoi").ToFloat();

                    gvHanghoa.SetFocusedRowCellValue(colSoluongGoc, SoluongGoc);
                    gvHanghoa.SetFocusedRowCellValue(colThanhtien, Thanhtien);
                    gvHanghoa.UpdateTotalSummary();
                    txtGianhap.EditValue = colThanhtien.SummaryItem.SummaryValue;
                }

                //Thay đổi giá xuất
                if (e.Column.Name.Equals("colGiaxuat"))
                {
                    DataRow[] xlDRHH = xgDTHanghoa.Select(String.Format("mahang = '{0}'", gvHanghoa.GetFocusedRowCellValue("Ma_Hanghoa").ToString()));

                    Thanhtien = gvHanghoa.GetFocusedRowCellValue("SLChuaquydoi").ToFloat() * e.Value.ToFloat();
                    gvHanghoa.SetFocusedRowCellValue(colThanhtien, Thanhtien);
                    gvHanghoa.UpdateTotalSummary();
                    txtGianhap.EditValue = colThanhtien.SummaryItem.SummaryValue;
                }
            }
            catch (Exception)
            {
            }
        }

        private void btnXemDanhSachCacPhienBan_Click(object sender, EventArgs e)
        {
            try
            {
                LoadQCBoSanpham(gvMain.GetFocusedRowCellValue("Ma").ToString());
            }
            catch (Exception)
            {
            }
        }

        private void gvMain_DoubleClick(object sender, EventArgs e)
        {
            try
            {
                LoadQCBoSanpham(gvMain.GetFocusedRowCellValue("Ma").ToString());
                gpcPhienban.Text = "Các phiên bản của dòng " + gvMain.GetFocusedRowCellValue("Ten").ToString();
            }
            catch (Exception)
            {
            }
        }

        private void btnXemChitietPhienban_Click(object sender, EventArgs e)
        {
            try
            {
                SL = gvSub1.GetFocusedRowCellValue("SoluongCon").ToFloat();
                dtpNgaytao.Properties.ReadOnly = true;
                txtThoigianBaohanh.Properties.ReadOnly = true;
                xgIsAOrE = false;
                TaiDulieuQCBoSanPham(gvSub1.GetFocusedRowCellValue("Ma").ToString());
                xgMa_BoSanpham = gvSub1.GetFocusedRowCellValue("Ma_BoSanpham").ToString();
            }
            catch (Exception)
            {
            }
        }

        float SL = 0;
        private void gvSub1_DoubleClick(object sender, EventArgs e)
        {
            SL = gvSub1.GetFocusedRowCellValue("SoluongCon").ToFloat();
            btnXemChitietPhienban_Click(null, null);
        }

        private void btnThemDongsanpham1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            DanhMuc.gkhtdl63.frmBoSanphamChitiet frm = new frmBoSanphamChitiet(true, new BanHangCshap.Class.gkhtdl63.DAL.Entities.BoSanpham());
            frm.ETailai += new MyEvent_LoadData(frm_ETailai);
            frm.ShowDialog();
        }

        private void frm_ETailai(object sender, ELoadData e)
        {
            if (e.IsLoadData)
            {
                LoadBoSanpham();
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            try
            {
                DataRow xlR = gvHanghoa.GetFocusedDataRow();
                xlR.Delete();
                gvHanghoa.UpdateCurrentRow();
            }
            catch (Exception)
            {
            }
        }

        private void btnXoa_gvSub1_Click(object sender, EventArgs e)
        {
            string MaBoSanpham = gvSub1.GetFocusedRowCellValue("Ma_BoSanpham").ToString();
            string MaQCBoSanpham = gvSub1.GetFocusedRowCellValue("Ma").ToString();
            if (DevExpress.XtraEditors.XtraMessageBox.Show("Bạn có chắc muốn xóa phiên bản " + gvSub1.GetFocusedRowCellValue("Ten").ToString() + " không?", "THÔNG BÁO", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                if (xgQCBoSanphamBLL.QCBoSanpham_Xoa(MaQCBoSanpham))
                {
                    DevExpress.XtraEditors.XtraMessageBox.Show("Xóa thành công", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    LoadQCBoSanpham(MaBoSanpham);
                    if (!txtMa.Text.Trim().Equals("") && txtMa.Text.Trim().Equals(MaQCBoSanpham))
                    {
                        XoatrongDulieuQCBoSanPham();
                    }
                }
                else
                    DevExpress.XtraEditors.XtraMessageBox.Show("Dữ liệu đang được sử dụng nên không thể xóa", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void btnXemChitietPhienbanHiendung_Click(object sender, EventArgs e)
        {
            string xlMa = "";
            try
            {
                xlMa = gvMain.GetFocusedRowCellValue("Ma").ToString(); ;
                if (!xlMa.Equals(""))
                {
                    DataTable xlDT = xgChitietQCBOSanphamBLL.ChitietQCBoSanpham_LayHiendungMoinhat(xlMa);
                    if (xlDT != null)
                    {
                        if (xlDT.Rows.Count > 0)
                        {
                            dtpNgaytao.Properties.ReadOnly = true;
                            txtThoigianBaohanh.Properties.ReadOnly = true;
                            xgIsAOrE = false;
                            TaiDulieuQCBoSanPham(xlDT.Rows[0]["Ma"].ToString());
                            return;
                        }
                    }
                }
                DevExpress.XtraEditors.XtraMessageBox.Show("Sản phẩm hiện không có phiên bản nào hoặc không có phiên bản nào hiện đang dùng", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception)
            {
            }
        }
    }
}
